﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp_test
{
    //internal内部的
    internal class Program
    {
        static void Main(string[] args)
        {
            TowerofHanoi towerofHanoi = new TowerofHanoi(); //创建汉诺塔实例

            Console.Write("请输入盘子数量:>");
            var input = Console.ReadLine();
            int n = int.Parse(input);   //字符串转换为整数 

            towerofHanoi.hainuo(n, 'A','B','C');

            Console.ReadKey();
        }
    }

    class Calculator    //计算器
    {
        //public 公共的
        public int Add(int a, int b)
        { return a + b; }
    }

    class TowerofHanoi  //汉诺塔
    {
        internal static int count;  //内部的用于记录步骤的

        public void hainuo(int n, char A, char B, char C)
        {
            if (n == 1)
            {
                count++;//计数,,整个递归中，只有这一步和放最后一个盘子是最底层的,需要+1
                Console.WriteLine($"第{count}步：{A} -> {C}\n"); 
            }
            else
            {
                //第一步，把A的n-1个盘字移动到辅助盘
                hainuo(n - 1, A, C, B);
                //第二步，把A最下面的盘移动到C盘
                count++;
                Console.WriteLine($"第{count}步：{A} -> {C}\n");
                //第三步，把辅助盘上的放到C盘上
                hainuo(n - 1, B, A, C);
            }
        }

    }
}